{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import numpy as np\n",
    "import cv2\n",
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_data_root = 'D:/Data/AerialImageDataset/test/'\n",
    "test_input_folder = test_data_root + 'predicted_masks_vgg16_bcedice_dataaug/0/'\n",
    "test_output_folder = test_data_root + 'integrated_vgg16_bcedice_dataaug/'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "180\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "  0%|                                                                                          | 0/180 [00:00<?, ?it/s]\n",
      "  1%|▍                                                                                 | 1/180 [00:01<03:17,  1.10s/it]\n",
      "  1%|▉                                                                                 | 2/180 [00:02<03:00,  1.01s/it]\n",
      "  2%|█▎                                                                                | 3/180 [00:03<03:02,  1.03s/it]\n",
      "  2%|█▊                                                                                | 4/180 [00:04<03:04,  1.05s/it]\n",
      "  3%|██▎                                                                               | 5/180 [00:05<03:00,  1.03s/it]\n",
      "  3%|██▋                                                                               | 6/180 [00:06<02:57,  1.02s/it]\n",
      "  4%|███▏                                                                              | 7/180 [00:07<02:56,  1.02s/it]\n",
      "  4%|███▋                                                                              | 8/180 [00:08<02:55,  1.02s/it]\n",
      "  5%|████                                                                              | 9/180 [00:09<02:53,  1.01s/it]\n",
      "  6%|████▌                                                                            | 10/180 [00:10<02:51,  1.01s/it]\n",
      "  6%|████▉                                                                            | 11/180 [00:11<02:50,  1.01s/it]\n",
      "  7%|█████▍                                                                           | 12/180 [00:12<02:48,  1.00s/it]\n",
      "  7%|█████▊                                                                           | 13/180 [00:13<02:47,  1.01s/it]\n",
      "  8%|██████▎                                                                          | 14/180 [00:13<02:45,  1.00it/s]\n",
      "  8%|██████▊                                                                          | 15/180 [00:14<02:42,  1.01it/s]\n",
      "  9%|███████▏                                                                         | 16/180 [00:15<02:42,  1.01it/s]\n",
      "  9%|███████▋                                                                         | 17/180 [00:16<02:41,  1.01it/s]\n",
      " 10%|████████                                                                         | 18/180 [00:17<02:40,  1.01it/s]\n",
      " 11%|████████▌                                                                        | 19/180 [00:21<02:59,  1.11s/it]\n",
      " 11%|█████████                                                                        | 20/180 [00:22<02:57,  1.11s/it]\n",
      " 12%|█████████▍                                                                       | 21/180 [00:24<03:08,  1.19s/it]\n",
      " 12%|█████████▉                                                                       | 22/180 [00:25<03:06,  1.18s/it]\n",
      " 13%|██████████▎                                                                      | 23/180 [00:27<03:05,  1.18s/it]\n",
      " 13%|██████████▊                                                                      | 24/180 [00:28<03:02,  1.17s/it]\n",
      " 14%|███████████▎                                                                     | 25/180 [00:29<03:00,  1.16s/it]\n",
      " 14%|███████████▋                                                                     | 26/180 [00:31<03:08,  1.23s/it]\n",
      " 15%|████████████▏                                                                    | 27/180 [00:34<03:17,  1.29s/it]\n",
      " 16%|████████████▌                                                                    | 28/180 [00:37<03:23,  1.34s/it]\n",
      " 16%|█████████████                                                                    | 29/180 [00:40<03:30,  1.39s/it]\n",
      " 17%|█████████████▌                                                                   | 30/180 [00:41<03:26,  1.38s/it]\n",
      " 17%|█████████████▉                                                                   | 31/180 [00:42<03:23,  1.37s/it]\n",
      " 18%|██████████████▍                                                                  | 32/180 [00:43<03:20,  1.35s/it]\n",
      " 18%|██████████████▊                                                                  | 33/180 [00:44<03:17,  1.34s/it]\n",
      " 19%|███████████████▎                                                                 | 34/180 [00:45<03:14,  1.33s/it]\n",
      " 19%|███████████████▊                                                                 | 35/180 [00:48<03:20,  1.38s/it]\n",
      " 20%|████████████████▏                                                                | 36/180 [00:49<03:17,  1.37s/it]\n",
      " 21%|████████████████▋                                                                | 37/180 [00:50<03:15,  1.36s/it]\n",
      " 21%|█████████████████                                                                | 38/180 [00:51<03:12,  1.35s/it]\n",
      " 22%|█████████████████▌                                                               | 39/180 [00:52<03:09,  1.35s/it]\n",
      " 22%|██████████████████                                                               | 40/180 [00:53<03:07,  1.34s/it]\n",
      " 23%|██████████████████▍                                                              | 41/180 [00:54<03:05,  1.33s/it]\n",
      " 23%|██████████████████▉                                                              | 42/180 [00:55<03:02,  1.32s/it]\n",
      " 24%|███████████████████▎                                                             | 43/180 [00:56<03:00,  1.31s/it]\n",
      " 24%|███████████████████▊                                                             | 44/180 [00:57<02:57,  1.31s/it]\n",
      " 25%|████████████████████▎                                                            | 45/180 [01:00<03:00,  1.34s/it]\n",
      " 26%|████████████████████▋                                                            | 46/180 [01:01<02:58,  1.33s/it]\n",
      " 26%|█████████████████████▏                                                           | 47/180 [01:03<03:00,  1.35s/it]\n",
      " 27%|█████████████████████▌                                                           | 48/180 [01:06<03:01,  1.38s/it]\n",
      " 27%|██████████████████████                                                           | 49/180 [01:07<02:59,  1.37s/it]\n",
      " 28%|██████████████████████▌                                                          | 50/180 [01:08<02:57,  1.36s/it]\n",
      " 28%|██████████████████████▉                                                          | 51/180 [01:09<02:54,  1.36s/it]\n",
      " 29%|███████████████████████▍                                                         | 52/180 [01:10<02:52,  1.35s/it]\n",
      " 29%|███████████████████████▊                                                         | 53/180 [01:12<02:54,  1.38s/it]\n",
      " 30%|████████████████████████▎                                                        | 54/180 [01:13<02:52,  1.37s/it]\n",
      " 31%|████████████████████████▊                                                        | 55/180 [01:14<02:50,  1.36s/it]\n",
      " 31%|█████████████████████████▏                                                       | 56/180 [01:15<02:48,  1.36s/it]\n",
      " 32%|█████████████████████████▋                                                       | 57/180 [01:16<02:46,  1.35s/it]\n",
      " 32%|██████████████████████████                                                       | 58/180 [01:18<02:44,  1.35s/it]\n",
      " 33%|██████████████████████████▌                                                      | 59/180 [01:19<02:42,  1.34s/it]\n",
      " 33%|███████████████████████████                                                      | 60/180 [01:21<02:43,  1.36s/it]\n",
      " 34%|███████████████████████████▍                                                     | 61/180 [01:24<02:44,  1.38s/it]\n",
      " 34%|███████████████████████████▉                                                     | 62/180 [01:26<02:44,  1.40s/it]\n",
      " 35%|████████████████████████████▎                                                    | 63/180 [01:27<02:42,  1.39s/it]\n",
      " 36%|████████████████████████████▊                                                    | 64/180 [01:28<02:40,  1.39s/it]\n",
      " 36%|█████████████████████████████▎                                                   | 65/180 [01:29<02:38,  1.38s/it]\n",
      " 37%|█████████████████████████████▋                                                   | 66/180 [01:30<02:36,  1.37s/it]\n",
      " 37%|██████████████████████████████▏                                                  | 67/180 [01:31<02:34,  1.37s/it]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 38%|██████████████████████████████▌                                                  | 68/180 [01:32<02:32,  1.36s/it]\n",
      " 38%|███████████████████████████████                                                  | 69/180 [01:33<02:30,  1.36s/it]\n",
      " 39%|███████████████████████████████▌                                                 | 70/180 [01:34<02:28,  1.35s/it]\n",
      " 39%|███████████████████████████████▉                                                 | 71/180 [01:37<02:29,  1.37s/it]\n",
      " 40%|████████████████████████████████▍                                                | 72/180 [01:38<02:27,  1.37s/it]\n",
      " 41%|████████████████████████████████▊                                                | 73/180 [01:39<02:26,  1.36s/it]\n",
      " 41%|█████████████████████████████████▎                                               | 74/180 [01:42<02:26,  1.38s/it]\n",
      " 42%|█████████████████████████████████▊                                               | 75/180 [01:43<02:24,  1.38s/it]\n",
      " 42%|██████████████████████████████████▏                                              | 76/180 [01:45<02:24,  1.39s/it]\n",
      " 43%|██████████████████████████████████▋                                              | 77/180 [01:46<02:22,  1.39s/it]\n",
      " 43%|███████████████████████████████████                                              | 78/180 [01:47<02:20,  1.38s/it]\n",
      " 44%|███████████████████████████████████▌                                             | 79/180 [01:51<02:22,  1.41s/it]\n",
      " 44%|████████████████████████████████████                                             | 80/180 [01:53<02:22,  1.42s/it]\n",
      " 45%|████████████████████████████████████▍                                            | 81/180 [01:54<02:20,  1.42s/it]\n",
      " 46%|████████████████████████████████████▉                                            | 82/180 [01:55<02:18,  1.41s/it]\n",
      " 46%|█████████████████████████████████████▎                                           | 83/180 [01:56<02:16,  1.41s/it]\n",
      " 47%|█████████████████████████████████████▊                                           | 84/180 [01:59<02:16,  1.42s/it]\n",
      " 47%|██████████████████████████████████████▎                                          | 85/180 [02:00<02:14,  1.42s/it]\n",
      " 48%|██████████████████████████████████████▋                                          | 86/180 [02:01<02:13,  1.42s/it]\n",
      " 48%|███████████████████████████████████████▏                                         | 87/180 [02:02<02:11,  1.41s/it]\n",
      " 49%|███████████████████████████████████████▌                                         | 88/180 [02:03<02:09,  1.40s/it]\n",
      " 49%|████████████████████████████████████████                                         | 89/180 [02:04<02:07,  1.40s/it]\n",
      " 50%|████████████████████████████████████████▌                                        | 90/180 [02:05<02:05,  1.40s/it]\n",
      " 51%|████████████████████████████████████████▉                                        | 91/180 [02:06<02:03,  1.39s/it]\n",
      " 51%|█████████████████████████████████████████▍                                       | 92/180 [02:07<02:02,  1.39s/it]\n",
      " 52%|█████████████████████████████████████████▊                                       | 93/180 [02:10<02:01,  1.40s/it]\n",
      " 52%|██████████████████████████████████████████▎                                      | 94/180 [02:12<02:01,  1.41s/it]\n",
      " 53%|██████████████████████████████████████████▊                                      | 95/180 [02:15<02:01,  1.43s/it]\n",
      " 53%|███████████████████████████████████████████▏                                     | 96/180 [02:18<02:00,  1.44s/it]\n",
      " 54%|███████████████████████████████████████████▋                                     | 97/180 [02:20<02:00,  1.45s/it]\n",
      " 54%|████████████████████████████████████████████                                     | 98/180 [02:22<01:59,  1.45s/it]\n",
      " 55%|████████████████████████████████████████████▌                                    | 99/180 [02:23<01:57,  1.45s/it]\n",
      " 56%|████████████████████████████████████████████▍                                   | 100/180 [02:25<01:56,  1.46s/it]\n",
      " 56%|████████████████████████████████████████████▉                                   | 101/180 [02:26<01:54,  1.45s/it]\n",
      " 57%|█████████████████████████████████████████████▎                                  | 102/180 [02:27<01:53,  1.45s/it]\n",
      " 57%|█████████████████████████████████████████████▊                                  | 103/180 [02:28<01:51,  1.44s/it]\n",
      " 58%|██████████████████████████████████████████████▏                                 | 104/180 [02:31<01:50,  1.45s/it]\n",
      " 58%|██████████████████████████████████████████████▋                                 | 105/180 [02:34<01:50,  1.47s/it]\n",
      " 59%|███████████████████████████████████████████████                                 | 106/180 [02:35<01:48,  1.47s/it]\n",
      " 59%|███████████████████████████████████████████████▌                                | 107/180 [02:38<01:47,  1.48s/it]\n",
      " 60%|████████████████████████████████████████████████                                | 108/180 [02:40<01:47,  1.49s/it]\n",
      " 61%|████████████████████████████████████████████████▍                               | 109/180 [02:43<01:46,  1.50s/it]\n",
      " 61%|████████████████████████████████████████████████▉                               | 110/180 [02:44<01:44,  1.50s/it]\n",
      " 62%|█████████████████████████████████████████████████▎                              | 111/180 [02:45<01:43,  1.49s/it]\n",
      " 62%|█████████████████████████████████████████████████▊                              | 112/180 [02:46<01:41,  1.49s/it]\n",
      " 63%|██████████████████████████████████████████████████▏                             | 113/180 [02:47<01:39,  1.48s/it]\n",
      " 63%|██████████████████████████████████████████████████▋                             | 114/180 [02:50<01:38,  1.50s/it]\n",
      " 64%|███████████████████████████████████████████████████                             | 115/180 [02:53<01:37,  1.51s/it]\n",
      " 64%|███████████████████████████████████████████████████▌                            | 116/180 [02:54<01:36,  1.50s/it]\n",
      " 65%|████████████████████████████████████████████████████                            | 117/180 [02:55<01:34,  1.50s/it]\n",
      " 66%|████████████████████████████████████████████████████▍                           | 118/180 [02:57<01:33,  1.51s/it]\n",
      " 66%|████████████████████████████████████████████████████▉                           | 119/180 [02:58<01:31,  1.50s/it]\n",
      " 67%|█████████████████████████████████████████████████████▎                          | 120/180 [02:59<01:29,  1.50s/it]\n",
      " 67%|█████████████████████████████████████████████████████▊                          | 121/180 [03:02<01:28,  1.51s/it]\n",
      " 68%|██████████████████████████████████████████████████████▏                         | 122/180 [03:04<01:27,  1.52s/it]\n",
      " 68%|██████████████████████████████████████████████████████▋                         | 123/180 [03:06<01:26,  1.51s/it]\n",
      " 69%|███████████████████████████████████████████████████████                         | 124/180 [03:07<01:24,  1.51s/it]\n",
      " 69%|███████████████████████████████████████████████████████▌                        | 125/180 [03:08<01:22,  1.51s/it]\n",
      " 70%|████████████████████████████████████████████████████████                        | 126/180 [03:09<01:21,  1.50s/it]\n",
      " 71%|████████████████████████████████████████████████████████▍                       | 127/180 [03:10<01:19,  1.50s/it]\n",
      " 71%|████████████████████████████████████████████████████████▉                       | 128/180 [03:11<01:17,  1.49s/it]\n",
      " 72%|█████████████████████████████████████████████████████████▎                      | 129/180 [03:12<01:16,  1.49s/it]\n",
      " 72%|█████████████████████████████████████████████████████████▊                      | 130/180 [03:13<01:14,  1.49s/it]\n",
      " 73%|██████████████████████████████████████████████████████████▏                     | 131/180 [03:14<01:12,  1.49s/it]\n",
      " 73%|██████████████████████████████████████████████████████████▋                     | 132/180 [03:15<01:11,  1.48s/it]\n",
      " 74%|███████████████████████████████████████████████████████████                     | 133/180 [03:18<01:10,  1.49s/it]\n",
      " 74%|███████████████████████████████████████████████████████████▌                    | 134/180 [03:19<01:08,  1.49s/it]\n",
      " 75%|████████████████████████████████████████████████████████████                    | 135/180 [03:20<01:06,  1.49s/it]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 76%|████████████████████████████████████████████████████████████▍                   | 136/180 [03:21<01:05,  1.48s/it]\n",
      " 76%|████████████████████████████████████████████████████████████▉                   | 137/180 [03:24<01:04,  1.49s/it]\n",
      " 77%|█████████████████████████████████████████████████████████████▎                  | 138/180 [03:25<01:02,  1.49s/it]\n",
      " 77%|█████████████████████████████████████████████████████████████▊                  | 139/180 [03:26<01:00,  1.48s/it]\n",
      " 78%|██████████████████████████████████████████████████████████████▏                 | 140/180 [03:27<00:59,  1.48s/it]\n",
      " 78%|██████████████████████████████████████████████████████████████▋                 | 141/180 [03:30<00:58,  1.49s/it]\n",
      " 79%|███████████████████████████████████████████████████████████████                 | 142/180 [03:33<00:57,  1.50s/it]\n",
      " 79%|███████████████████████████████████████████████████████████████▌                | 143/180 [03:35<00:55,  1.51s/it]\n",
      " 80%|████████████████████████████████████████████████████████████████                | 144/180 [03:36<00:54,  1.50s/it]\n",
      " 81%|████████████████████████████████████████████████████████████████▍               | 145/180 [03:39<00:52,  1.51s/it]\n",
      " 81%|████████████████████████████████████████████████████████████████▉               | 146/180 [03:40<00:51,  1.51s/it]\n",
      " 82%|█████████████████████████████████████████████████████████████████▎              | 147/180 [03:43<00:50,  1.52s/it]\n",
      " 82%|█████████████████████████████████████████████████████████████████▊              | 148/180 [03:44<00:48,  1.52s/it]\n",
      " 83%|██████████████████████████████████████████████████████████████████▏             | 149/180 [03:45<00:46,  1.51s/it]\n",
      " 83%|██████████████████████████████████████████████████████████████████▋             | 150/180 [03:47<00:45,  1.52s/it]\n",
      " 84%|███████████████████████████████████████████████████████████████████             | 151/180 [03:48<00:43,  1.52s/it]\n",
      " 84%|███████████████████████████████████████████████████████████████████▌            | 152/180 [03:49<00:42,  1.51s/it]\n",
      " 85%|████████████████████████████████████████████████████████████████████            | 153/180 [03:50<00:40,  1.51s/it]\n",
      " 86%|████████████████████████████████████████████████████████████████████▍           | 154/180 [03:51<00:39,  1.51s/it]\n",
      " 86%|████████████████████████████████████████████████████████████████████▉           | 155/180 [03:53<00:37,  1.50s/it]\n",
      " 87%|█████████████████████████████████████████████████████████████████████▎          | 156/180 [03:56<00:36,  1.51s/it]\n",
      " 87%|█████████████████████████████████████████████████████████████████████▊          | 157/180 [03:57<00:34,  1.51s/it]\n",
      " 88%|██████████████████████████████████████████████████████████████████████▏         | 158/180 [03:58<00:33,  1.51s/it]\n",
      " 88%|██████████████████████████████████████████████████████████████████████▋         | 159/180 [03:59<00:31,  1.50s/it]\n",
      " 89%|███████████████████████████████████████████████████████████████████████         | 160/180 [04:00<00:30,  1.50s/it]\n",
      " 89%|███████████████████████████████████████████████████████████████████████▌        | 161/180 [04:02<00:28,  1.51s/it]\n",
      " 90%|████████████████████████████████████████████████████████████████████████        | 162/180 [04:03<00:27,  1.51s/it]\n",
      " 91%|████████████████████████████████████████████████████████████████████████▍       | 163/180 [04:05<00:25,  1.50s/it]\n",
      " 91%|████████████████████████████████████████████████████████████████████████▉       | 164/180 [04:06<00:24,  1.50s/it]\n",
      " 92%|█████████████████████████████████████████████████████████████████████████▎      | 165/180 [04:08<00:22,  1.51s/it]\n",
      " 92%|█████████████████████████████████████████████████████████████████████████▊      | 166/180 [04:11<00:21,  1.51s/it]\n",
      " 93%|██████████████████████████████████████████████████████████████████████████▏     | 167/180 [04:13<00:19,  1.52s/it]\n",
      " 93%|██████████████████████████████████████████████████████████████████████████▋     | 168/180 [04:14<00:18,  1.52s/it]\n",
      " 94%|███████████████████████████████████████████████████████████████████████████     | 169/180 [04:15<00:16,  1.51s/it]\n",
      " 94%|███████████████████████████████████████████████████████████████████████████▌    | 170/180 [04:18<00:15,  1.52s/it]\n",
      " 95%|████████████████████████████████████████████████████████████████████████████    | 171/180 [04:19<00:13,  1.52s/it]\n",
      " 96%|████████████████████████████████████████████████████████████████████████████▍   | 172/180 [04:20<00:12,  1.52s/it]\n",
      " 96%|████████████████████████████████████████████████████████████████████████████▉   | 173/180 [04:23<00:10,  1.52s/it]\n",
      " 97%|█████████████████████████████████████████████████████████████████████████████▎  | 174/180 [04:24<00:09,  1.52s/it]\n",
      " 97%|█████████████████████████████████████████████████████████████████████████████▊  | 175/180 [04:27<00:07,  1.53s/it]\n",
      " 98%|██████████████████████████████████████████████████████████████████████████████▏ | 176/180 [04:30<00:06,  1.54s/it]\n",
      " 98%|██████████████████████████████████████████████████████████████████████████████▋ | 177/180 [04:31<00:04,  1.53s/it]\n",
      " 99%|███████████████████████████████████████████████████████████████████████████████ | 178/180 [04:34<00:03,  1.54s/it]\n",
      " 99%|███████████████████████████████████████████████████████████████████████████████▌| 179/180 [04:37<00:01,  1.55s/it]\n",
      "100%|████████████████████████████████████████████████████████████████████████████████| 180/180 [04:38<00:00,  1.55s/it]\n"
     ]
    }
   ],
   "source": [
    "name_set = set([filename.split('_')[0] for filename in os.listdir(test_input_folder)])\n",
    "print(len(name_set))\n",
    "size=256\n",
    "for name in tqdm(name_set):\n",
    "    output_img = np.zeros([5120,5120])\n",
    "    for row in range(20):\n",
    "        for col in range(20):\n",
    "            output_name = name + '.tif'\n",
    "            part_name = '{}_{}_{}.jpg'.format(name,row,col)\n",
    "            part_img = cv2.imread(test_input_folder + part_name, cv2.IMREAD_GRAYSCALE)\n",
    "            # 再做一次二值化， threshold = 0.5\n",
    "            part_img = cv2.threshold(part_img, 127, 255,cv2.THRESH_BINARY)[1]\n",
    "            output_img[row*size:(row+1)*size, col*size:(col+1)*size] = part_img\n",
    "    output_img = cv2.resize(output_img, (5000,5000))\n",
    "#     print(output_img.shape)\n",
    "    cv2.imwrite(test_output_folder+output_name, output_img)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
